import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * La clase Enemigos contiene los diferentes tipos de enemigos que se encuentran en el juego
 * 
 * @author (Alcantar Noyola Christian Andres) 
 * @author (Sanchez Ovalle Daniel) 
 * @version (29/04/13)
 */
public abstract class Enemigo extends Actor
{
    private Jugador chango;

    /**
     * Este metodo nos permite mover a los enemigos sobre el escenario
     * el movimiento va hacer descendente sobre el eje Y
     */
    public void mover()
    {
        Escenario1 mundo=(Escenario1)this.getWorld();
        setLocation(getX(), getY() +1);  
        this.checarchango();

        //si el obstaculo es mayor a 480 o se encontro al jugador se elimina ese obstaculo
        if(chango!=null || getY()>=480) 
        {
            mundo.removeObject(this);
            mundo.restaNumEnem();
        }
    }

    /**
     * Este metodo checha al chango, si el chango es tocado por un enemigo
     * el chango se cambia de posicion y se modifican los itemsdelchango dependiendo
     * de que enemigo lo haya tocado
     */
    public void checarchango()
    {
        chango=(Jugador)this.getOneIntersectingObject(Jugador.class); 
        if(chango!=null)
        {
            chango.setLocation(685,446);
            this.modificaItemsDelChango();
        }  
    }

    /**
     * Este metodo manda llamar a otros metodos de la clase escenario1 para indicar con una
     * imagen que el jugador a perdido el juego.
     */
    public void MensajeGameOver()
    {
        Escenario1 mundo=(Escenario1)this.getWorld();
        mundo.prepare(3);
    }

    /**
     * Metodo abstracto que genera cambios en los atributos del jugador.
     */
    public abstract void modificaItemsDelChango();

    /**
     * Este metodo regresa la variable chango.
     * @return Este metodo regresa null si el enemigo no ha encontrado al jugador.
     */
    public Jugador getChango()
    {
        return chango;
    }

}
